/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package mx.unam.fciencias.ActividadesCulturales.pages;

import mx.unam.fciencias.ActividadesCulturales.services.ServicioUsuario;
import mx.unam.fciencias.actividadesculturales.entidades.portal.UsuarioSistema;
import org.apache.tapestry5.EventConstants;
import org.apache.tapestry5.annotations.Component;
import org.apache.tapestry5.annotations.OnEvent;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.Service;
import org.apache.tapestry5.annotations.SessionState;
import org.apache.tapestry5.corelib.components.Form;
import org.apache.tapestry5.ioc.annotations.Inject;

/**
 * Clase Index para entrar al sistema.
 * @author lumartin
 */
public class Index {

    /** Mensaje de error. */
    private static final String ERROR_login = "Usuario o Clave erróneo.";

    /** Usuario tecleado. */
    @Property
    private String usuario;

    /** clave tecleada por el usuario. */
    @Property
    private String clave;

    /** Formulario para autenticarse en el sistema */
    @Component
    private Form login;

    /** Inyección de srvicio utilizado para el acceso a datos de usuario. */
    @Inject
    @Service("servicioUsuario")
    private ServicioUsuario servicioUsuario;

    /** usuario del sistema. */
    @SessionState
    private UsuarioSistema user;

    /**
     * Metodo que verifica si el usuario esta registrado
     * manda un mensaje de error si no lo esta.
     */
    @OnEvent(component = "login", value = EventConstants.VALIDATE_FORM)
    public void validaUsuario() {
        UsuarioSistema usuarioSis = servicioUsuario.verificaLogin(usuario, clave);
        if (usuarioSis != null) {
            user = usuarioSis;
        } else {
            login.recordError("Usuario o contraseña no válidos");
        }
    }

    /**
     * Metodo que se ejecuta si validaUsuario() fue correcto.
     * @return la pagina a donde sera redirigido.
     */
    @OnEvent(component = "login", value = EventConstants.SUCCESS)
    public Object onSuccess() {
        return Inicio.class;
    }
}
